iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
自我挑戰組

Swift - 來吧!鐵人三十項系列 第 19

Day19:當天的鐵人當天寫 - Optional(2)

  • 分享至 

  • xImage
  •  

前前言

嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第十九篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。


承上集 - force unwrap

這集要來複習打開 Optional 這個箱子的幾種方式
雖然你知道箱子裡有什麼,但系統不知道,故一定要打開

以下先來看一個例子,當你想要印出這個 Optional 時,系統會跟你說要先 unwrap:

而你還沒 unwrap 時,print 出來的東西長這樣:

而第一個要介紹的打開箱子的方式叫 - force unwrap
從它的名字就可以知道,它真的很暴力、很強迫,所以帶有一些危險性

先來試試看打開這個箱子,在後面加驚嘆號:

再來看看印出的東西,嗯!正常了:

那萬一箱子裡是 nil 會發生什麼事情呢,系統哭給你看了:

故接下來要學習的是如何安全地打開箱子


Optional Binding

第一個要學的安全開箱法叫 - Optional Binding

很像 if else,但又有一些不一樣,直接來看個例子
原本的 Optional Binding 的概念應該是長這樣:

如果 catNumber 不是 nil,就把它開箱的值存進一個新的變數

然後簡化成了這樣:

值得注意的是,在這個 scope 範圍內,這兩個變數名是可以取一樣的:

當然也可以多重開箱,用逗號來區隔就可以:


guard let 開箱

另一個安全開箱法是 guard let,和上面很像,只是會先把 else 放在前面,也一樣直接看例子吧:


其他 - 給予預設值

有些時候就算是沒有值,你也可以給它設一個預設值(利用雙問號):


上一篇
Day18:當天的鐵人當天寫 - Optional(1)
下一篇
Day20:當天的鐵人當天寫 - Array
系列文
Swift - 來吧!鐵人三十項30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言